Over the past three decades, computing, especially online computing, has proliferated to the point of ubiquity. Whereas computing and computer systems were initially common only in enterprise settings, most individuals and families today own and regularly use a networked computing device of some type. The emergence of the Internet has redefined the traditional paradigm of computing, shifting the locus of most computing tasks from non-networked mainframes or personal computers serving a limited number of users to networked server appliances that serve potentially millions of users a day. In particular, the recent phenomenon of cloud computing has given rise to online portals and applications that run on server architectures and are used to provide specialized online services to millions of end users. One such portal, Yahoo.com, provides dozens of applications performing a variety of different functions, such as Yahoo! Mail, Yahoo! Finance, Yahoo! Games, and Yahoo! Messenger. Although system architectures are generalized to enable processing of a variety of different tasks, each architecture has strengths and weaknesses, and one architecture may be better suited to running a particular type of application than another. In order to provide a satisfactory user experience, application providers must ensure that each online applications is run on an architecture that is suited to its particular processing needs and thus yields optimal performance. Consequently, the decision on which architecture should be used to run a particular application is a critical one for application providers.